На этот вопрос уже есть ответы здесь: Обратить строку в Python (29 ответов) Закрыт 4 года назад. Я пытаюсь перевернуть строку и использую приведенный ниже код, но результирующее значение обратного списка равно None. Код: str_a = 'Это движение' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = '' .join (rev_word) Он возвращает TypeError. Почему?
2021-01-15 08:11:22
.reverse () возвращает значение None. Поэтому не следует присваивать его переменной. Используйте вместо этого: stra = 'Это строка' revword = stra.split () revword.reverse () revword = ''. присоединиться (revword) Я запустил код в IDEOne, чтобы вы могли увидеть результат. (Также обратите внимание, что вывод - stringaisThis; вместо этого вы можете использовать '' .join (revword) с пробелом.) Также обратите внимание, что предоставленный вами метод меняет местами только слова, а не текст. @ ron.rothman предоставил ссылку, в которой подробно описано, как полностью перевернуть строку. | Это мой любимый способ перевернуть строку: stra = "Это строка" revword = stra [:: - 1] print (revword) # "gnirts a si sihT или, если вы хотите изменить порядок слов: revword = "" .join (stra.split () [:: - 1]) print (revword) # "строка a - это" :) | Различные переворачивания струны: instring = 'Это строка' reversedstring = instring [:: - 1] print reversestring # gnirts a sihT wordsreversed = '' .join (слово [:: - 1] для слова в instring.split ()) напечатать словаreversed # sihT si a gnirts revwordorder = '' .join (слово в слово в instring.split () [:: - 1]) print revwordorder # строка a это Это revwordandorder = '' .join (слово [:: - 1] для слова в instring.split () [:: - 1]) печать revwordandorder # gnirts a si sihT | Для справки в будущем, когда объект имеет такой метод, как [] .reverse (), он обычно выполняет это действие с объектом (т. Е. Список сортируется и ничего не возвращает, None) в отличие от встроенных функций, таких как sorted, которые выполняют действие с объект и возвращает значение (то есть отсортированный список) | >>> s = 'это строка' >>> s [:: - 1] 'gnirts a si siht' >>> '' .join (обратное (s)) 'gnirts a si siht' | Цикл for выполняет итерацию строки от конца (последняя буква) до начала (первая буква) >>> s = 'Вы тоже можете попробовать:]' >>> rev = '' >>> для i в диапазоне (len (s) - 1, -1, -1): ... rev + = s [i] >>> rev ']: oot siht yrt nac uoY' | На основании комментариев и других ответов: str_a = 'это строка' rev_word = '' .join (обратное (str_a.split ())) В конце концов, цепочка методов работает в Python ... | Перевернуть список можно более чем одним способом. Как упоминалось в предыдущих ответах, два очень заметны: один с функцией reverse () и два с функцией нарезки. Я даю некоторое представление о том, какой из них мы должны предпочесть. Мы всегда должны использовать функцию reverse () для обращения списка Python. Две причины: одна разворот на месте и две быстрее других. У меня есть цифры, подтверждающие мой ответ, В [15]: len (l) Вых [15]: 1000 В [16]:% timeit -n1 l.reverse () 1 петля, лучше всего 3: 7,87 мкс на петлю В [17]:% timeit -n1 l [:: - 1] 1 петля, лучше всего 3: 10 мкс на петлю Для списка из 1000 целых чисел функция reverse () работает лучше, чем нарезка. | Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками python или задайте свой вопрос.